// 微信云开发请求实现
const platform = process.env.PLATFORM;
const wx_service = process.env.X_WX_SERVICE;
const wx_env = process.env.X_WX_ENV;

/**
 * 微信云开发请求函数
 * @param {string} url - 请求路径
 * @param {object} data - 请求数据
 * @param {string} method - 请求方法
 * @returns {Promise} 请求结果Promise
 */
const wxcloud = (url, data = {}, method = 'POST') => {
	const token = encodeURIComponent(uni.getStorageSync('token') || '');
	const clubId = uni.getStorageSync("club_id") || 0;
	const longitude = uni.getStorageSync("longitude") || 0;
	const latitude = uni.getStorageSync("latitude") || 0;
	const header = {
		'Content-Type': 'application/json',
		'ba-user-token': token,
		'clubid': clubId,
		'platform': platform,
		'X-WX-SERVICE': wx_service,
		'latitude': latitude,
		'longitude': longitude
	};
	const promise = new Promise((resolve, reject) => {
		const option = {
			"config": {
				"env": wx_env
			},
			"path": url,
			"header": header,
			"method": method,
			"data": data,
			success: (res) => {
				if (res.statusCode === 200) {
					if (res.data.code == 1 || res.data.code == 200) {
						resolve(res.data);
					} else {
						reject(res.data);
					}
				} else {
					reject(res.data);
				}
			},
			fail: (res) => {
				reject("网络出错了（" + res.statusCode + ")");
			}
		};
		wx.cloud.callContainer(option);
	});

	return promise;
};

/**
 * 微信云开发POST请求
 * @param {string} url - 请求路径
 * @param {object} data - 请求数据
 * @returns {Promise} 请求结果Promise
 */
function postRequest(url, data) {
	return wxcloud(url, data, 'POST');
}

/**
 * 微信云开发GET请求
 * @param {string} url - 请求路径
 * @param {object} data - 请求数据
 * @returns {Promise} 请求结果Promise
 */
function getRequest(url, data) {
	return wxcloud(url, data, 'GET');
}

module.exports = {
	wxcloud,
	post: postRequest,
	get: getRequest
};